Computers and computer software makeup a very important part of modern life and business. Specifically, for any business organization to stay competitive, it is imperative that it uses various computer based software to manage data, customers, employees, etc. Businesses use a number of different software for virtually every function of their daily operations, such as payroll, customer relation management, accounting, inventory management. Each of these various pieces of software generally use one or more underlying databases to store data and a number of graphical user interface (GUI) based forms to interact with the computer user. Depending on the business model, there may also be one or more intermediate layers operating between such database and the forms presented to the end user.
In most data-centric applications, forms are the central place for entering and displaying data. For example, accounting software may use a form to present data related to a transaction to a user. Alternatively a form may also be used to allow a user to input data that will be processed by that accounting software and/or stored in the underlying database. For example, a purchase form may be presented to a user of the accounting system to allow the user to input information regarding purchase of an item. Such a purchase form may have various fields, including the general ledger account number, the vendor information, inventory account if the purchased item is an inventory item, an expense account if the purchase item is an expense item, method of payment, payment account, etc. Each of the various fields that are displayed with the form may be attached to related tables in the database. The form may also be attached to one or more objects representing these fields.
Computer applications often provide means for form customizations. Using such customization abilities, end users can change forms by adding, deleting and moving different form elements such as fields, sections, tabs, etc. While such form customization is a big benefit to the end user, it posses considerable problems when trying to merge two or more forms that have been individually customized. Form merging may be necessary for a number of reasons such as: (1) when forms are customized in a previous version of an application, an upgrade to the application needs to merge the new forms with the customized forms that the user has, (2) when forms were independently customized by two different users and both changes need to be merged, (3) when forms are customized by a third party developers to provide a pre-defined vertical business solutions that need to be integrated with the end user's system, etc.
A form merging operation may need to meet a number of criteria that allows continuous use of the forms by the users without any loss to the user experience while at the same time maintaining the integrity of the data attached to the forms. For example, when a customized form is merged with a new version of the form, the merged form should be familiar to the user who prepared the customized form. The user shouldn't have to spend time getting accustomed to the new form layout, which means that the fields and other elements in the merged form should preferably be in the expected places. Similarly, the order and the grouping of the fields in the merged form should be preferably preserved and the merged form should preferably contain all the elements from the new version of the form and these elements should be integrated at the places they were intended to be by the user customizing the form. Moreover, the merged form layout should preferably be natural in a manner so that, ideally, the merged form looks as if the user had manually customized the new form.